听说过曹操有一匹好马叫做“绝影”,快得连影子都追不上它。很久以后他才知道所谓绝影只是一个传说,布加迪威龙是世界上最快量产跑车,可它跑不过时光,也跑不过早已被注定的--命运。
import sys
import hashlib
import requests
reload(sys)
sys.setdefaultencoding('utf-8')

主要功能

hashlib 是一个提供了一些流行的hash算法的 Python 标准库,其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512。注意,你必须传入的值是不可变类型的,在Python3中只接受bytes类型的数据。

MD5加密代码演示

md5 = hashlib.md5()
md5.update('langzi')
print md5.hexdigest()

运行结果:

1f39efed68efce4ab4130f0c665a2f04

常用方法就是这样,先定义一个变量接受hashlib,然后传入你要计算的数值update,最后打印出来。

SHA1加密代码演示

sha1 = hashlib.sha1()
sha1.update('langzi')
print sha1.hexdigest()

运行结果:

af9e0aecdd8b8bfda6c223f438366dc7d8882f90

选择sha1算法,然后添加对象,计算哈希码,最后打印出来,基本格式都是这样,不同算法的唯一区别在于hashlib.(),比如要计算md5就把\改成md5就成。

构造新的哈希对象

h = hashlib.new('ripemd160', 'hello python')    
# ripemd160是一个160位的hash算法. ripemd系列算法基于md4, md5.
print h.hexdigest()

这种基本在日常用的很少。

判断网页CMS类型的指纹

在扫描器中,有需要判断网址的CMS类型,其中判断类型方法有一种是CMS指纹。CMS指纹:网站文件|CMS类型|网站文件的MD5值。

/static/image/admincp/cloud/qun_op.png|DISCUZ|AB35FA459B0BB01D31BA8FAD0953FCC9|
/widget/images/thumbnail.jpg|ECSHOP|7BB50E4281FA02758834A2E9D7BA9FB9|
/js/calendar/active-bg.gif|ECSHOP|F8FB9F2B7428C94B41320AA1BC9CF601|
/phpcms/libs/data/font/Vineta.ttf|PHPCMS|E6E557BAD69B09533827D9652E0C11AB|
/statics/images/admin_img/arrowhead-y.png|PHPCMS|6C34F70BD2A05C8C5DDEBB369B5B9509|

代码实例

req = requests.get(url='http://360.mafengwo.cn/static/image/admincp/cloud/qun_op.png')
md5 = hashlib.md5()
md5.update(req.content)
print md5.hexdigest()

检测方法就是把网站的文件拼接,然后方法这个网站路径,获取md5值,对比md5,判断CMS类型。